Dev Tools > Pipeline > コンソール使用ガイド > テンプレートガイド

テンプレートガイドでは、テンプレートファイルを利用してパイプラインを作成する方法を説明します。

既存のパイプラインと同じパイプラインの作成

すでに構成されているパイプラインからJSONファイルをダウンロードした後、同じ形式の新規パイプラインを作成する方法です。

1. 既存のパイプラインJSONファイルをダウンロード

既存のパイプラインを選択して基本情報のJSONを表示>パイプラインテンプレートをダウンロードの手順でJSONファイルをダウンロードできます。 template-guide-01

2. テンプレートファイルでパイプラインを作成

2.1パイプライン管理でパイプライン作成をクリックします。ダウンロードしたJSONファイルをアップロードします。アップロード後、「次へ」をクリックすると、すぐに最終確認段階に進みます。

template-guide-02

2.2最終確認段階で登録されたファイル名の確認が可能で、作成をクリックするとパイプラインが作成されます。

template-guide-03 template-guide-04

サンプルシナリオテンプレートでパイプラインを作成

シナリオごとにサンプルテンプレートファイルを提供して、簡単にパイプラインを作成できます。

希望するシナリオにあるJSONファイルをダウンロードすると、中括弧({})で要求するデータ全体を入力して使用できます。特に[環境設定]の接頭辞が付くデータの場合、Pipeline > 環境設定にあるデータを使用するため、データが登録されている必要があります。Pipelineユーザーガイドで登録方法を確認できます。

Bake Stageの使用に関するサンプルシナリオテンプレートは、機能変更が必要であり、後日提供される予定です。

1. ソース - ビルド - 配布段階の基本的なシナリオ

テンプレートファイルダウンロード

Githubからソースコードを取得してNHN Cloudビルドツールでビルド後、対象サーバーにManifest情報で配布するシナリオです。

template-guide-08.png

登録されているJSONファイルをダウンロード後、中括弧で表示されたデータに対する情報を入力する必要があります。

ソースステージ

ソースステージのうちGithubを基準にガイドが作成されました。Pipelineステージガイドでステージの詳細ガイドが確認できます。

{
    "type": "githubSource",
    "name": "source",
    "refId": "1",
    "requisiteStageRefIds": [],
    "sourceRepo": "{[環境設定]ソースリポジトリ設定に保存されたソースリポジトリ名}",   //環境設定に登録したソースリポジトリ名の入力が必要です。 
    "branch": "{配布対象ブランチ}"  //配布対象ソースブランチに該当する値の入力が必要です。(例.main)
},

"sourceRepo": "{ソースリポジトリ設定に保存されたソースリポジトリ名}"で入力値を要求しており、環境設定内のソースリポジトリ設定に登録した情報の中で使用するソースリポジトリ名を確認し、"sourceRepo": "github-pipeline"のように修正が必要です。

template-guide-05

イメージストア設定配布対象設定と同じように設定された名前の確認後、修正が必要です。

ビルドステージ

ビルドステージのうちNHN Cloudビルドツールを基準にガイドが作成されました。Pipelineステージガイドでステージの詳細ガイドが確認できます。

{
    "type": "imageBuild",
    "name": "build",
    "refId": "2",
    "requisiteStageRefIds": [
        "1"
    ],
    "buildImageRegistry": "{[環境設定]イメージストア設定に保存されたイメージストア名}",    //環境設定に登録したイメージストア名の入力が必要です。(例.buildImageRegistry-pipeline)
    "buildImageName": "{イメージ名}",  //イメージ名の入力が必要です。(例.maven)
    "buildImageTag": "{イメージタグ}",   //イメージタグ情報が必要です。(例.1.0.0)
    "buildCommand": "{ビルドコマンド}",    //ビルドコマンドが必要です。(例.mvn package)
    "dockerfilePath": "{Dockerfileパス}",  //Dockerfileのパス入力が必要です。(例.Dockerfile)
    "buildWorkDir": "",   //選択項目でDockerfileの実行パスを入力します。
    "pushImageRegistry": "{[環境設定]ビルド結果がアップロードされるイメージストア設定に保存されたイメージストア名}",  //環境設定に登録したイメージストア名の入力が必要です。(例.pushImageRegistry-pipeline)
    "pushImageName": "{ビルド結果イメージ名}", //ビルド結果に対するイメージ名の入力が必要です。(例.result-image)
    "pushImageTag": "{ビルド結果イメージタグ}",  //ビルド結果のイメージタグが必要です。(例.latest)
    "buildFlavorName": "c2m4",  //デフォルト値がc2m4であり、c4m8性能でも提供されます。
    "buildTimeout": 30, //デフォルト値は30分です。1から600まで入力できます。
    "startArtifacts": null,
    "expectedArtifacts": null
},

配布ステージ

配布ステージはDeployステージでガイドが作成されました。Pipelineステージガイドでステージの詳細ガイドが確認できます。

{
    "type": "deployManifest",
    "name": "deploy",
    "refId": "3",
    "requisiteStageRefIds": [
        "2"
    ],
    "deployTarget": "{[環境設定]配布対象設定に保存された配布対象名}",  //環境設定に登録した配布対象名の入力が必要です。(例.deploy-pipeline)
    "manifests": [
        // Deployment Manifest情報の入力が必要です。
        // 以下の例を参考にして作成後、登録して使用できます。
        {
            "apiVersion": "apps/v1",
            "kind": "Deployment",
            "metadata": {
                "labels": {
                    "app": "pipeline-test"
                },
                "name": "pipeline-test"
            },
            "spec": {
                "replicas": 2,
                "revisionHistoryLimit": 3,
                "selector": {
                    "matchLabels": {
                        "app": "pipeline-test-example"
                    }
                },
                "template": {
                    "metadata": {
                        "labels": {
                            "app": "pipeline-test-example"
                        },
                        "name": "pipeline-test-example"
                    },
                    "spec": {
                        "containers": [
                            {
                                "image": "example.registry.container.nhncloud.com/test/pipelineImage:latest",
                                "imagePullPolicy": "Always",
                                "name": "pipeline-test",
                                "ports": [
                                    {
                                        "containerPort": 8080
                                    }
                                ]
                            }
                        ]
                    }
                }
            }
        }
    ],
    "namespaceOverride": "",
    "startArtifacts": null,
    "expectedArtifacts": null,
    "manifestArtifactId": null,
    "manifestSource": "text",
    "manifestArtifact": null
}

Deployステージで使用するManifest情報は配布環境に合わせて変更する必要があります。 YAMLファイルをJSON形式に変更する必要があります(ステージの変更によりコンソールUIでの作業を推奨します)。

以降のシナリオもこのシナリオを基に作成されています。

2. パイプライン完了通知を追加するシナリオ

テンプレートファイルダウンロード

配布後、Webhookで通知を受け取るシナリオです。Webhookを受け取るURLとPayload、Methodに該当するデータを入力後、使用可能です。

template-guide-09.png

PipelineステージガイドでWebhookステージの詳細ガイドが確認できます。

{
    "type": "webhook",
    "name": "webhook",
    "refId": "4",
    "requisiteStageRefIds": [
        "3"
    ],
    "url": "{Webhookを送るURL}",
    "payload": null, // http request body
    "customHeaders": {}, // http request header
    "failFastStatusCodes": [
        500  // 403,500,503
    ],
    "method": "{}" // GET, POST, PUT, DELETE, PATCH, HEAD
}

3. Github(GitLab、イメージストア)イベント発生時のPipeline自動実行シナリオ

Pipelineコンソール使用ガイド

テンプレートのTrigger領域を設定すると、Github(GitLab、イメージストア)自動実行設定ができます。 コンソール使用ガイドの自動実行部分に入力値に関する追加ガイドがあります。 template-guide-08.png

triggers: [
    {
        "type": "git",
        "branch": "{ブランチ}",
        "organization": "{組織名またはユーザー名}",
        "secret": "{シークレット情報}",
        "project": "{プロジェクト名}",
        "source": "github"
    }
],

4. 1つのパイプラインで開発環境とリアル環境を分けて配布するシナリオ

テンプレートファイルダウンロード

1つのパイプラインでユーザーの選択に応じて分岐処理を行うように配布できます。 このシナリオは開発環境、リアル環境のように区分された環境に配布する場合に活用できます。 template-guide-10.png 例で作成されたパイプラインのように develop, real を選択して好きな環境に配布できます。 異なる値に変更して使用でき、この時、後ろにあるPrecondition Stageの値も同様に修正する必要があります。

PipelineステージガイドでJudgement(実行管理)、Precondition(実行条件)ステージの詳細ガイドが確認できます。

[
  {
    "type": "manualJudgment",
    "name": "judgement",
    "refId": "4",
    "requisiteStageRefIds": [
      "2"
    ],
    "failPipeline": false,
    "completeOtherBranchesThenFail": false,
    "continuePipeline": false,
    "instructions": "開発環境、リアル環境の分岐処理",
    "judgmentInputs": [
      {
        "value": "develop" // preconditionsと同じ値である必要があります。
      },
      {
        "value": "real" // preconditionsと同じ値である必要があります。
      }
    ],
    "notifications": []
  },
  {
    "type": "checkPreconditions",
    "name": "precondition-develop",
    "refId": "5",
    "requisiteStageRefIds": [
      "4"
    ],
    "preconditions": [
      {
        "failPipeline": false,
        "type": "expression",
        "context": {
          "equals": true,
          "targetExecutionValue": "develop", // 希望する任意の値に変更可能です。
          "expression": null,
          "failureMessage": null
        }
      }
    ]
  },
  {
    "type": "checkPreconditions",
    "name": "precondition-real",
    "refId": "6",
    "requisiteStageRefIds": [
      "4"
    ],
    "preconditions": [
      {
        "failPipeline": false,
        "type": "expression",
        "context": {
          "equals": true,
          "targetExecutionValue": "real", // 希望する任意の値に変更可能です。
          "expression": null,
          "failureMessage": null
        }
      }
    ]
  },
]

5. リアル環境への配布前に承認手続きを追加して配布するシナリオ

テンプレートファイルダウンロード template-guide-11.png 4番シナリオでリアル環境に配布する前に承認段階を追加し、承認後に配布されるように構成できます。

Pipelineステージガイドで承認管理ステージの詳細ガイドが確認できます。

{
    "type": "manualJudgment",
    "name": "approve",
    "refId": "8",
    "requisiteStageRefIds": [
        "6"
    ],
    "instructions": "承認管理ステージです。",
    "judgmentInputs": [],
    "approval": true
}

6. 多数のパイプラインで開発環境、リアル環境を分けて配布するシナリオ

テンプレートファイルダウンロード

パイプラインが環境ごとに分離して構成されている場合、パイプライン自体を選択して配布できます。 template-guide-12.png

[
  {
    "type": "pipeline",
    "name": "execute-pipeline",
    "refId": "4",
    "requisiteStageRefIds": [
      "2"
    ],
    "pipeline": "{実行したいパイプラインID}",
    "waitForCompletion": true
  },
  {
    "type": "pipeline",
    "name": "execute-pipeline",
    "refId": "5",
    "requisiteStageRefIds": [
      "3"
    ],
    "pipeline": "{実行したいパイプラインID}",
    "waitForCompletion": true
  }
]

パイプラインIDはパイプラインバージョン > JSON表示をクリックして確認できます。 template-guide-06 template-guide-07

TOP